Vault Secret Operator

개요

볼트의 기능들을 쿠버네티스에서 활용할 수 있도록 만들어진 CRD컨트롤러.
쿠버네티스의 시크릿이 볼트의 시크릿을 캐싱하는 역할로 활용될 수 있다.

기능

오퍼레이터 패턴이란 게 사실 뭐 그리 대단히 추가되는 기능이 있는 게 아니라 그냥 다양한 다른 툴을 클러스터 관리 방식으로 운용한다는데 장점이 있는 거긴 한데..
아무튼 문서에서 말하는 기능은 이렇다.

리소스

어떤 리소스가 있는 구체적으로는 그냥 문서보는 게 낫다.[1]
여기에선 간단하게 핵심이 될만한 것들만 정리한다.

VaultConnection

apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultConnection
metadata:
  name: vault-connection
spec:
  address: http://vault.vault.svc.cluster.local:8200
  # 옵션
  # headers: []
  # tlsServerName: ""
  # skipTLSVerify: false
  # caCertSecretRef: ""

연결할 볼트 서버 정보를 명시하는 리소스이다.

VaultAuth

apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultAuth
metadata:
  name: vault-auth
spec:
  # VaultConnection 리소스 명시
  # 이 값이 없으면 네임스페이스에 설정된 기본 볼트 커넥션을 쓴다.
  vaultConnectionRef: vault-connection
  # 인증 방식
  method: kubernetes
  # Mount to use when authenticating to auth method.
  mount: kubernetes
  # 인증 메서드 별 추가 필드
  kubernetes:
    role: example
    serviceAccount: default

볼트에 인증을 투사하는 리소스.

VaultStaticSecret

apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultStaticSecret
metadata:
  namespace: vso-example
spec:
  # VaultAuth 리소스 명시
  vaultAuthRef: vault-auth
  # 어떤 시크릿 엔진 쓸지
  mount: kvv1
  type: kv-v1
  path: eng/apikey/google
  refreshAfter: 60s
  # 쿠버 시크릿으로 만들어진다.
  destination:
    create: true
    name: static-secret1

kv 엔진의 시크릿을 받아올 때.

VaultDynamicSecret

apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultDynamicSecret
metadata:
  namespace: vso-example
  name: vault-dynamic-secret-db
spec:
  vaultAuthRef: vault-auth
  mount: db
  path: creds/my-postgresql-role
  destination:
    create: true
    name: app-secret
    transformation:
      excludes:
       - .*
      templates:
        url:
          text: |
            {{- $host := get .Annotations "myapp.config/postgres-host" -}}
            {{- printf "postgresql://%s:%s@%s/postgres?sslmode=disable" (get .Secrets "username") (get .Secrets "password") $host -}}

뭐.. 동적 시크릿 받아올 때인데 사용방식은 크게 다르지 않다.

설치

helm repo add hashicorp https://helm.releases.hashicorp.com
helm search repo hashicorp/vault-secrets-operator
helm install --version 0.10.0 --create-namespace --namespace vault-secrets-operator vault-secrets-operator hashicorp/vault-secrets-operator

헬름 딸깍.
얘네는 차트 레포 말고도 따로 문서를 제공해주네..?[2]

관련 문서

이름 noteType created
Vault Secret Operator knowledge 2025-04-14

참고


  1. https://developer.hashicorp.com/vault/docs/platform/k8s/vso/api-reference ↩︎

  2. https://developer.hashicorp.com/vault/docs/platform/k8s/vso/helm ↩︎